#include <stdio.h>
#include <signal.h>

volatile int g_flag = 0;//全局变量

void changeflag(int signo)
{
    printf("g_flag -> 1\n");
    g_flag = 1;
}

int main()
{
    signal(2, changeflag);

    while(!g_flag);//故意写成这个样子,why???
    // 编译器默认会对我们的代码进行自动优化!!!
    // 编译器发现在main函数内没有对g_flag进行修改，存放在寄存器
    // 会出现意外的结果
    printf("process quit normal!\n");

    return 0;
}